package legumes.client.ui.widgets.window.connexion;

import legumes.client.evt.main.UserConnectedEvent;
import legumes.client.evt.manager.EventBusManager;
import legumes.client.resources.PNResources;
import legumes.client.ui.widgets.form.ConnexionForm;
import legumes.shared.domain.CustomerDTO;

import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.CloseClickHandler;
import com.smartgwt.client.widgets.events.CloseClientEvent;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

public class ConnexionWindow extends Window {

	private ConnexionForm connexionForm;
	private IButton newAccountBut;

	public ConnexionWindow() {
		super();
		setTitle("<img src=\"" + PNResources.INSTANCE.userAddIcon().getURL() + "\" />&nbsp;Cr&eacute;&eacute;r un nouveau compte");
		setWidth(640);
		setHeight(345);
		setMembersMargin(10);
		setShowCloseButton(true);
		setShowMinimizeButton(false);
		setAutoCenter(true);
		setShowModalMask(true);
		addCloseClickHandler(new CloseClickHandler() {  
            public void onCloseClick(CloseClientEvent event) {  
            	ConnexionWindow.this.destroy();  
            }  
        });
		
		Label lab = new Label(
				"Vous n'êtes pas encore authenfié. Veuillez saisir vos identifiants de connexion ou créer un nouveau compte pour valider votre commande.");
		lab.setAutoHeight();
		lab.setMargin(10);
		
		VLayout vl = new VLayout();
		vl.setWidth100();
		vl.setHeight100();
		vl.setMargin(10);
		
		HLayout hl = new HLayout();
		hl.setHeight("*");
		hl.setWidth100();
		createConnexionPanel();
		VLayout newUserVl = createNewUserPanel();
		connexionForm.setWidth("50%");
		newUserVl.setWidth("50%");
		hl.setMembers(connexionForm, newUserVl);
		
		vl.setMembers(lab, hl);
		addItem(vl);
		show();
	}

	private void createConnexionPanel() {
		connexionForm = new ConnexionForm(false) {
			protected void onUserConnected(CustomerDTO customer_) {
				EventBusManager.getInstance().getEventBus()
						.fireEvent(new UserConnectedEvent(customer_));
			}
		};
	}

	private VLayout createNewUserPanel() {
		VLayout vl = new VLayout();
		vl.setLayoutAlign(Alignment.CENTER);
		vl.setAlign(Alignment.CENTER);
		vl.setMembersMargin(10);
		newAccountBut = new IButton("Cr&eacute;er un compte...",
				new com.smartgwt.client.widgets.events.ClickHandler() {

					@Override
					public void onClick(
							com.smartgwt.client.widgets.events.ClickEvent event) {
						connexionForm.showNewAccountDialog();
					}
				});
		newAccountBut.setAutoFit(true);
		newAccountBut.setLayoutAlign(Alignment.CENTER);
		newAccountBut.setTabIndex(1000);
		newAccountBut.setIcon(PNResources.INSTANCE.userAddIcon().getURL());
		
		Label labTitle = new Label(
		"<h3>Nouvel utilisateur</h3>");
		labTitle.setAutoHeight();
		labTitle.setWrap(true);
		labTitle.setValign(VerticalAlignment.TOP);
		
		Label lab = new Label(
		"Vous n'avez pas encore de compte. Cliquez sur le bouton ci-dessous pour vous inscrire.");
		lab.setAutoHeight();
		lab.setWrap(true);
		lab.setLayoutAlign(Alignment.CENTER);
		
		VLayout glue = new VLayout();
		glue.setHeight("*");
		glue.setWidth100();
		vl.setMembers(labTitle, lab, newAccountBut, glue);
		return vl;
	}
}
